package engine.asset
{
	import engine.core.*;
	import engine.graphics.resources.*;
	
	public class RxAssetSpriteSheet extends RxAsset
	{
		private var m_image:RxAssetImage;
		private var m_sets:Object;
		private static var s_type:int;
		
		public function RxAssetSpriteSheet()
		{
			super(s_type);
		}
		
		public function GetSet(str:String) : RxSpriteSet
		{
			var spriteSet:RxSpriteSet = null;
			if (str == null)
			{
				spriteSet = this.m_sets[0];
			}
			else
			{
				spriteSet = this.m_sets[str];
			}
			
			return spriteSet;
		}
		
		public static function Initialize() : void
		{
			s_type = RxAsset.RegisterType("spritesheet", CreateFromXML);
		}
		
		public static function CreateFromXML(param1:XML, param2:String) : RxAssetSpriteSheet
		{
			var _loc_6:XML = null;
			var _loc_7:String = null;
			var _loc_8:int = 0;
			var _loc_9:int = 0;
			var _loc_10:int = 0;
			var _loc_11:int = 0;
			var _loc_12:int = 0;
			var _loc_13:int = 0;
			var _loc_14:Number = NaN;
			var _loc_15:Number = NaN;
			var _loc_16:RxSpriteSet = null;
			var _loc_3:* = param1.@name;
			var _loc_4:* = param1.@url;
			_loc_4 = RxUtilities.MergePath(param2, _loc_4);
			var _loc_5:* = Create(_loc_4, _loc_3);
			for each (_loc_6 in param1.spriteSet)
			{
				
				_loc_7 = _loc_6.@name;
				_loc_8 = int(_loc_6.@x);
				_loc_9 = int(_loc_6.@y);
				_loc_10 = int(_loc_6.@width);
				_loc_11 = int(_loc_6.@height);
				_loc_12 = int(_loc_6.@gridWidth);
				_loc_13 = int(_loc_6.@frames);
				_loc_14 = Number(_loc_6.@fps);
				_loc_15 = 0;
				if (_loc_14 > 0)
				{
					_loc_15 = 1 / _loc_14;
				}
				_loc_16 = new RxSpriteSet(_loc_5, _loc_7, _loc_8, _loc_9, _loc_10, _loc_11, _loc_12, _loc_13, _loc_15, _loc_6);
				_loc_5.AddSpriteSet(_loc_16);
			}
			return _loc_5;
		}
		
		public static function Create(param1:String, param2:String) : RxAssetSpriteSheet
		{
			var _loc_3:* = GetByURL(param1);
			if (_loc_3 != null)
			{
				var _loc_4:* = _loc_3;
				var _loc_5:* = _loc_3.m_references + 1;
				_loc_4.m_references = _loc_5;
				return _loc_3;
			}
			_loc_3 = new RxAssetSpriteSheet;
			_loc_3.SetURL(param1);
			_loc_3.SetName(param2);
			return _loc_3;
		}
		
		public static function GetByURL(param1:String) : RxAssetSpriteSheet
		{
			return RxAssetSpriteSheet(_getByURL(param1, s_type));
		}
	}
}